/*   
 * forkdemo1.c  
 * 显示 fork 如何创建两个进程，这两个进程通过不同的 fork() 返回值区分  
 */  

#include <stdio.h>      // 标准输入输出头文件  
#include <unistd.h>     // 提供 fork() 和 getpid() 等函数  
#include <sys/types.h>  // 定义 pid_t 类型  
#include <stdlib.h>     // 提供 exit() 函数  
#include <errno.h>      // 提供错误处理所需的 errno  

int main(void)  
{  
    pid_t ret_from_fork;  // fork() 的返回值  
    pid_t mypid;          // 当前进程的 PID  

    mypid = getpid(); // 获取当前进程的 PID  
    printf("之前: 我的 PID 是 %d\n", mypid); // 打印当前进程的 PID  

    ret_from_fork = fork(); // 创建子进程  

    // 暂停 1 秒，以确保输出的顺序  
    sleep(1);  

    printf("之后: 我的 PID 是 %d，fork() 返回值为 %d\n", getpid(), ret_from_fork);  

    return 0; // 正常退出  
}